package cn.aggregate.LinKedList;

import java.util.LinkedList;

/*
LinKedList底层为链表格式他的特点为查询慢，增删快 多线程
里面包含了大量操作首尾元素的方法；
LinKedList特有方法不能使用多态
 */
public class Dome01LinKedList {
    public static void main(String[] args) {
         show03();
    }
    /*
    public E removeFirst():从此列表中删除并返回第一个元素。
    public E removeLast():从此列表中删除并返回最后一个元素。
    public E pop():从此列表表示的堆栈中弹出一个元素。 换句话说，删除并返回此列表的第一个元素。 此方法相当度remofirst；
     */
    private static void show03() {
        LinkedList<String> linkedList3 = new LinkedList<>();
        linkedList3.add("o1");
        linkedList3.add("o2");
        linkedList3.add("o3");
        System.out.println(linkedList3);
        String ds = linkedList3.removeFirst();
        System.out.println(ds);
        String ds2 = linkedList3.removeLast();
        System.out.println(ds2);
    }

    /*
    public E getFirst():返回此列表中的第一个元素。
    public E getLast():返回此列表中的最后一个元素。
    public boolean isEmpty()如果此集合不包含元素，则返回true 。
     */
    private static void show02() {
        LinkedList<String> linkedList2 = new LinkedList<>();
        linkedList2.add("o1");
        linkedList2.add("o2");
        linkedList2.add("o3");

        //linkedList2.clear();//清空集合中的元素报错：java.util.NoSuchElementException
        if (!linkedList2.isEmpty()){
            System.out.println(linkedList2);
            String fist = linkedList2.getFirst();
            System.out.println(fist);
            String fist2 = linkedList2.getLast();
            System.out.println(fist2);
        }


    }

    private static void show01() {
        LinkedList<String> linkedList = new LinkedList<>();
        linkedList.add("o1");
        linkedList.add("o2");
        linkedList.add("o3");
        System.out.println(linkedList);
        //pudlic void addFirst(E e):将指定元素插入此列表开头
        //pudlic void push(E e):和addFirst效果一致
        linkedList.addFirst("www");
        System.out.println(linkedList);
        //pudlic void addlast（E e）：将指定元素添加到集合的末尾
        linkedList.addLast("com");
        System.out.println(linkedList);
    }
}
